<!DOCTYPE html>
<html lang="pt-br">
	<head>
		<meta charset="utf-8">
		<base href="../../../" />
		<script src="page.js"></script>
		<link type="text/css" rel="stylesheet" href="page.css" />
	</head>
	<body>
		<h1>Como executar localmente</h1>

		<p>
			Se você usar apenas geometrias procedurais e não carregar nenhuma textura, 
			as páginas web devem funcionar direto do sistema de arquivos, bastando clicar duas vezes 
			no arquivo HTML em um gerenciador de arquivos para então funcionar no navegador (você verá <em>file:///yourFile.html</em> na barra de endereço).
		</p>

		<h2>Conteúdo carregado de arquivos externos</h2>

		<div>
			<p>
				Se você carregar modelos ou texturas de arquivos externos, devido a [link:http://en.wikipedia.org/wiki/Same_origin_policy same origin policy] 
				dos navegadores, o carregamento de um sistema de arquivos falhará com uma exceção de segurança.
			</p>

			<p>
				Para resolver isso, execute os arquivos de um servidor web local. Isso permitirá acessar a página por:
			</p>

			<p>
				<code>http://localhost/yourFile.html</code>
			</p>

			<p>
				Embora também seja possível alterar as configurações de segurança do navegador ao invés de executar 
				um servidor local, não recomendamos essa abordagem. Isso pode abrir seu dispositivo para vulnerabilidades, 
				se o mesmo navegador é usado para navegação regular na web. O uso de um servidor local é uma prática padrão 
				em desenvolvimento web e explicamos abaixo como instalar e usar um servidor local.
			</p>
		</div>


		<h2>Rodando um servidor local</h2>
		<div>
			<p>
				Muitas linguagens de programação têm servidores HTTP simples embutidos. Eles não são tão 
				completos quanto servidores de produção como o [link:https://www.apache.org/ Apache] ou o 
				[link:https://nginx.org NGINX], no entanto devem ser suficientes para testar sua aplicação three.js.
			</p>

			<h3>Plugins para editores populares de código</h3>
			<div>
				<p>
					Alguns editores de código tem plugins que irão rodar um servidor simples.
				</p>
				<ul>
					<li>[link:https://marketplace.visualstudio.com/items?itemName=yandeu.five-server Five Server] para Visual Studio Code.</li>
					<li>[link:https://marketplace.visualstudio.com/items?itemName=ritwickdey.LiveServer Live Server] para Visual Studio Code.</li>
					<li>[link:https://atom.io/packages/atom-live-server Live Server] para Atom.</li>
				</ul>
			</div>

			<h3>Servez</h3>
			<div>
				<p>
					[link:https://greggman.github.io/servez Servez] é um servidor simples com uma interface gráfica.
				</p>
			</div>

			<h3>Node.js five-server</h3>
			<div>
				<p>
					Servidor de desenvolvimento com live reload. Para instalar:
				</p>
				<code>
# Remove live-server (if you have it)
npm -g rm live-server

# Install five-server
npm -g i five-server

# Update five-server (from time to time)
npm -g i five-server@latest
				</code>

				<p>Para executar (do seu diretório local):</p>
				<code>five-server . -p 8000</code>
			</div>

			<h3>Node.js http-server</h3>
			<div>
				<p>
					O Node.js tem um pacote simples de um servidor HTTP. Para instalar:
				</p>
				<code>npm install http-server -g</code>

				<p>Para executar (do seu diretório local):</p>
				<code>http-server . -p 8000</code>
			</div>

			<h3>Servidor Python</h3>
			<div>
				<p>
					Se você tem [link:http://python.org/ Python] instalado, deve ser suficiente para 
					executar esse comando (do seu diretório de trabalho):
				</p>
				<code>
//Python 2.x
python -m SimpleHTTPServer
			
//Python 3.x
python -m http.server
				</code>

				<p>Isso vai servir os arquivos do diretório atual para localhost na porta 8000, 
					isto é, na barra de endereço digite:
				</p>

				<code>http://localhost:8000/</code>
			</div>

			<h3>Servidor Ruby</h3>
			<div>
				<p>
					Se você tem Ruby instalado, você poder ter o mesmo resultado executando:
				</p>
				<code>
					ruby -r webrick -e "s = WEBrick::HTTPServer.new(:Port => 8000, :DocumentRoot => Dir.pwd); trap('INT') { s.shutdown }; s.start"
				</code>
			</div>

			<h3>Servidor PHP</h3>
			<div>
				<p>PHP também tem um servidor web embutido, começando com php 5.4.0:</p>
				<code>php -S localhost:8000</code>
			</div>

			<h3>Lighttpd</h3>
			<div>
				<p>
					Lighttpd é um servidor web de uso geral muito leve. Abordaremos a instalação no OSX 
					com HomeBrew aqui. Ao contrário dos outros servidores discutidos, Lighttpd é um servidor 
					completo de produção.
				</p>

				<ol>
					<li>
						Instale via homebrew
						<code>brew install lighttpd</code>
					</li>
					<li>
						Crie um arquivo de configuração chamado lighttpd.conf no diretório onde você irá executar 
						o servidor web. Um exemplo está [link:http://redmine.lighttpd.net/projects/lighttpd/wiki/TutorialConfiguration aqui].
					 </li>
					<li>
						No arquivo conf, mude o server.document-root para o diretório do qual você quer servir os arquivos.
					</li>
					<li>
						Comece com
						<code>lighttpd -f lighttpd.conf</code>
					</li>
					<li>
						Navegue até http://localhost:8000/ e ele servirá os arquivos estáticos do diretório que você 
						escolheu.
					</li>
				</ol>
			</div>
			<h3>IIS</h3>
			<div>
				<p>
					Se você estiver usando o Microsoft IIS como servidor web. Por favor adicione
					 configurações de tipo MIME em relação à extensão .fbx antes de carregar.
				</p>
				<code>File name extension: fbx        MIME Type: text/plain</code>
				<p>
					Por padrão, o IIS bloqueia downloads de arquivos .fbx e .obj. Você tem que 
					configurar o IIS para habilitar que esse tipo de arquivo possa ser baixado.
				</p>
			</div>
			<p>
				Outras alternativas simples são [link:http://stackoverflow.com/q/12905426/24874 discutidas aqui] no StackOverflow.
			</p>
		</div>

	</body>
</html>
